package bd;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import pojos.Message;

/**
 * Ayuda con las sql
 * @author Carlos Cenjor
 *
 */
public class SQLHelper {
	/**
	 * Recupera los mensajes de la base de datos
	 */
	public static final String QUERY_GET_MESSAGES="SELECT * FROM mensajes LIMIT 50";
	
	/**
	 * Permite insertar mensajes en la base de datos
	 */
	public static final String QUERY_INSERT_MESSAGE="INSERT INTO mensajes (nick,hour,message) VALUES (?,?,?)";

	/**
	 * Messages field nick
	 */
	public static final String NICK_KEY="nick";	
	/**
	 * Messages field nick index
	 */
	public static final int NICK_KEY_INDEX=1;	
	/**
	 * Messages field hour
	 */
	public static final String HOUR_KEY="hour";
	/**
	 * Messages field hour index
	 */
	public static final int HOUR_KEY_INDEX=2;		
	/**
	 * Messages field message text
	 */
	public static final String MESSAGE_KEY="message";
	/**
	 * Messages field message text index
	 */
	public static final int MESSAGE_KEY_INDEX=3;
	/**
	 * Crea un mensaje de una sql	
	 */
	public static Message getMessage(ResultSet rs) {
		if(rs==null) return null;
		try {
			String nick=rs.getString(NICK_KEY);
			if(nick=="null") nick=null;
			String hour=rs.getString(HOUR_KEY);
			if(hour=="null") hour=null;
			String msg=rs.getString(MESSAGE_KEY);
			if(msg=="null") msg=null;
			return new Message(
								nick,
								hour,
								msg
								);
		} catch (SQLException e) {
			System.err.println("No se puedo generar el mensaje");
			return null;
		}
	}
	/**
	 * Rellena los datos de una sentencia a partir de un mensaje
	 * @return 
	 * @throws SQLException 
	 */
	public static PreparedStatement getInsertPSFromMessage(Message msg) throws SQLException{
		if(msg==null) return null;
		PreparedStatement ps=DBHandler.getInstance().getConn().prepareStatement(QUERY_INSERT_MESSAGE);
		ps.setString(NICK_KEY_INDEX, 		msg.getNick());	
		ps.setString(HOUR_KEY_INDEX, 		msg.getDate());	
		ps.setString(MESSAGE_KEY_INDEX, 	msg.getMsg());		
		return ps;
	}
}
